package com.sapitest.utils.redis.commands;

import redis.clients.jedis.Jedis;

/**
 * @date 2019-01-13
 * @author Liuxu
 * @version 1.0.0
 * @since jdk1.8
 */
@Deprecated
public class RedisString {

    /**
     * String数据类型执行命令 append，追加 value 之后， key 中字符串的长度
     * @param jedis Jedis对象
     * @param key   键
     * @param value 值
     * @return  执行结果
     */
    public String stappend(Jedis jedis, String key, String value){
        return String.valueOf(jedis.append(key, value));
    }

    /**
     * String数据类型执行命令 bitcount，被设置为 1 的位的数量
     * @param jedis Jedis对象
     * @param key   键
     * @return  执行结果
     */
    public String stbitcount(Jedis jedis, String key){
        return String.valueOf(jedis.bitcount(key));
    }

    /**
     * String数据类型执行命令 decr，返回key中储存的数字值减 1
     * @param jedis Jedis对象
     * @param key   键
     * @return  执行结果
     */
    public String stdecr(Jedis jedis, String key){
        return String.valueOf(jedis.decr(key));
    }

    /**
     * String数据类型执行命令 decrBy，返回key中储存的数字值减 num
     * @param jedis Jedis对象
     * @param key   键
     * @param num 需要减的值
     * @return  执行结果
     */
    public String stdecrby(Jedis jedis, String key, Long num){
        return String.valueOf(jedis.decrBy(key, num));
    }

    /**
     * String数据类型执行命令 incr，返回key中储存的数字值加 1
     * @param jedis Jedis对象
     * @param key   键
     * @return  执行结果
     */
    public String stincr(Jedis jedis, String key){
        return String.valueOf(jedis.incr(key));
    }

    /**
     * String数据类型执行命令 incrBy，返回key中储存的数字值加 num
     * @param jedis Jedis对象
     * @param key   键
     * @param num 需要减的值
     * @return  执行结果
     */
    public String stincrby(Jedis jedis, String key, Long num){
        return String.valueOf(jedis.incrBy(key, num));
    }

    /**
     * String数据类型执行命令 get，当key不存在时，返回nil；否则，返回key的值；如果key不是字符串类
     * 型，那么返回一个错误
     * @param jedis Jedis对象
     * @param key   键
     * @return  执行结果
     */
    public String stget(Jedis jedis, String key){
        return jedis.get(key);
    }

    /**
     * String数据类型执行命令 set，在设置操作成功完成时，返回OK；条件没达到而造成设置操作未执行，
     * 那么命令返回空批量回复(NULL Bulk Reply)
     * @param jedis Jedis对象
     * @param key   键
     * @param value 值
     * @return  执行结果
     */
    public String stset(Jedis jedis, String key, String value){
        return jedis.set(key, value);
    }

}
